package Controlador;

import Modelo.Chofer;
import Modelo.Listas;
import Modelo.Socio;
import Vista.JFrameSocio;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;

public class ControladorSocio implements ActionListener, KeyListener {

    private JFrameSocio formSocio;
    private Listas listaS;

    public ControladorSocio(Listas lisS) {
        listaS = lisS;
        formSocio = new JFrameSocio();
        formSocio.agregarListener(this, this);
        formSocio.setVisible(true);
        cargarCoop();
        Enabled(false);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formSocio.getBtnSalirS())) {
            formSocio.dispose();
        }

        if (e.getSource().equals(formSocio.getBtnBuscarS())) {
            new ControladorConsulSocio(listaS);
        }
        if (e.getSource().equals(formSocio.getBtnGuardarS())) {
            Grabar();
        }
        if (e.getSource().equals(formSocio.getBtnCancelarS())) {
            Limpiar();
        }
        if (e.getSource().equals(formSocio.getCmbCooperativa())) {
            String cadena;
            cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
            if(cadena.equals("Seleccione"))
            {
                formSocio.getTxtNomCoop().setText("");
            }
            comboRif();
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getSource().equals(formSocio.getTxtCedulaS())) {
            CedulakeyPressed(e);
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }
    //------------------------------------------

    private void Enabled(boolean Status) {
        formSocio.getTxtCedulaS().setEnabled(!Status);
        formSocio.getTxtNombreS().setEnabled(Status);
        formSocio.getCmbCargo().setEnabled(Status);
        formSocio.getCmbCooperativa().setEnabled(Status);
        formSocio.getTxtCantUT().setEnabled(Status);
    }
    //------------------------------------------------------------

    private void cargarCoop() {
        int fila, pos;
        String rif;
        String nom;
        for (fila = 0; fila < listaS.getListaCoop().size(); fila++) {
            rif = listaS.getListaCoop().get(fila).getRifC();
            formSocio.getCmbCooperativa().addItem(rif);
            if (listaS.getListaCoop().get(fila).getRifC().equals(rif)) {
                nom = listaS.getListaCoop().get(fila).getNombreC();
            }
        }
    }

    private void comboRif() {
        String cadena;
        int pos;
        cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
        for (pos = 0; pos < listaS.getListaCoop().size(); pos++) {
            if (listaS.getListaCoop().get(pos).getRifC().equals(cadena)) {
                formSocio.getTxtNomCoop().setText(listaS.getListaCoop().get(pos).getNombreC());
            }
        }
    }
    //------------------------------------------------------------

    private void Limpiar() {
        formSocio.getTxtCedulaS().setText("");
        formSocio.getTxtNombreS().setText("");
        formSocio.getCmbCargo().setSelectedItem("Seleccione");
        formSocio.getTxtCantUT().setText(null);
        formSocio.getCmbCooperativa().setSelectedItem("Seleccione");
        formSocio.getTxtNomCoop().setText("");

    }
//---------------------------------------------------------------

    private void Grabar() {
        Socio socio = new Socio();
        String Cadena;

        Cadena = formSocio.getTxtCedulaS().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Cedula Vacia", "");
            formSocio.getTxtCedulaS().requestFocusInWindow();
            return;
        }

        Cadena = formSocio.getTxtNombreS().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Nombre Vacio", "");
            formSocio.getTxtNombreS().requestFocusInWindow();
            return;
        }
        
        Cadena = formSocio.getCmbCargo().getSelectedItem().toString();
        if (Cadena.equals("Seleccione")) {
            Mensajes.Aviso("Seleccione un Cargo", "");
            formSocio.getCmbCargo().requestFocusInWindow();
            return;
        }
        
        Cadena = formSocio.getCmbCooperativa().getSelectedItem().toString();
        if (Cadena.equals("Seleccione")) {
            Mensajes.Aviso("Seleccione una Cooperativa", "");
            formSocio.getCmbCooperativa().requestFocusInWindow();
            return;
        }

        Cadena = formSocio.getTxtCantUT().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Cantidad vacia", "");
            formSocio.getTxtCantUT().requestFocusInWindow();
            return;
        }


        socio.Socio(formSocio.getTxtCedulaS().getText(),
                formSocio.getTxtNombreS().getText(),
                formSocio.getCmbCargo().getSelectedItem().toString(),
                Integer.parseInt(formSocio.getTxtCantUT().getText()),
                formSocio.getCmbCooperativa().getSelectedItem().toString());

        listaS.getListaSocio().add(socio);
        Mensajes.Aviso("Socio guardado con exito", "");
        Limpiar();
        Enabled(false);
        formSocio.getTxtCedulaS().requestFocusInWindow();
    }

    public int Existesocio(String Cedsocio) {
        int i = 0, Posi = -1;

        Socio socio;
        String CedLista;

        for (i = 0; i < listaS.getListaSocio().size(); i++) {
            socio = listaS.getListaSocio().get(i);

            CedLista = socio.getCedula();

            if (CedLista.equals(Cedsocio)) {
                Posi = i;
                return Posi;
            }

        }

        return Posi;
    }
//---------------------------------------------------------------

    private void CedulakeyPressed(KeyEvent e) {
        if (e.getSource().equals(formSocio.getTxtCedulaS())) {

            String Cadena;
            int Posisocio;
            Socio socio = new Socio();
            Cadena = formSocio.getTxtCedulaS().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) {
                Mensajes.Aviso("Cedula invalida", "");
                formSocio.getTxtCedulaS().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) {

                Posisocio = Existesocio(Cadena);
                if (Posisocio >= 0) {
                    socio = listaS.getListaSocio().get(Posisocio);
                    formSocio.getTxtNombreS().setText(socio.getNombre());
                    formSocio.getCmbCargo().setSelectedItem(socio.getCargo());
                    formSocio.getTxtCantUT().setText(Integer.toString(socio.getCantUT()));

                    Mensajes.Aviso("Socio ya Existe", "");
                    Limpiar();

                } else {
                    Enabled(true);
                    formSocio.getTxtNombreS().requestFocusInWindow();

                }
            }

        }
    }
}